Skip to content

feat: действия организатора с кейсом, привязкой и сдачей проекта - #814

Merged
TThanos3000 merged 1 commit into
devfrom
feat/dev-project-management-actions-20261022
Oct 21, 2026
Merged

TThanos3000 merged 1 commit into
devfrom
feat/dev-project-management-actions-20261022

Conversation

@TThanos3000

Copy link
Copy Markdown
Collaborator

Что изменено

Организаторы программы и администраторы могут подтвердить смену кейса, открепление заявки и сдачу текущих материалов за участника после срока. Обычный лидерский endpoint сохраняет свои ограничения.

Зачем

Исправление ошибочных привязок/дублей и помощь участникам при проблемах со сдачей.

Реализация

Двухэтапное preview/apply: подписанное подтверждение с актером, программой, действием, ID связей, кейсом, хешем состояния и сроком10 минут. Apply повторяет права и валидацию под блокировками Project(no-key) → Program → Link/definitions.

Смена кейса сохраняет оценки и назначения оценивших; снимает только несовместимые назначения без оценки. Открепление удаляет связь, ее значения, назначения и приглашения, очищает profile.project только этой программы; проект/команда/регистрация/аккаунты/оценки/другие программы сохраняются. Сдача проверяет обязательные поля, варианты, URL материалов, завершенность заявки и команду. При блокере весь набор отклоняется; уже сданные пропускаются с прежней датой.

API

Новые POST /programs/{id}/management/projects/actions/{preview|apply}/. Тело: action(change_case|detach|submit), ids, case_name для смены, preview_token для apply. Preview: items/errors, counts, can_apply, preview_token; apply: changed_count/already_submitted_count. Старые API не меняются, миграций нет.

UI

Отдельный frontend PR после API: существующее меню строк, центральные подтверждения и массовая сдача по всем выбранным страницам.

Permissions

can_manage_program на конкретной программе, повтор под lock. Аноним401; посторонний/эксперт/участник403; чужая связь404; устаревшее/подмененное подтверждение409. Аудит actor/program/action/link IDs без содержимого анкет.

Проверки

  • [x]50 PostgreSQL targeted/regression tests, включая2 конкурентных сценария: новая оценка требует свежего подтверждения; одновременная сдача один раз.
  • Подмена/expiry token, revoked manager, malformed body, обязательные поля/legacy case/checkbox false/URL,25 записей с блокером на второй странице, сохранность связанных сущностей.
  • Targeted Black/Flake8 correctness и git diff --check.
  • Angular browser integration1440/390/360 с изолированным API, синтетическими данными и locmem mail;0 писем.

Acceptance criteria

  • Три подтверждаемых program-scoped действия с сохранением связанных сущностей.
  • Сдача заполненной заявки после срока и массово с проверкой всего набора.
  • Изменение рейтинга при смене кейса/откреплении разрешено пользователем и подтверждается в UI.

Риски и ограничения

Оценки открепленной заявки сохраняются в БД и исключаются из рейтинга отсутствием link. Реальные пользователи и production не изменялись. Dev deploy и published QA после CI.

@TThanos3000
TThanos3000 merged commit 511dc3e into dev Oct 21, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants